// 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。

// 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢？

//解题思路  https://blog.csdn.net/zhizhengguan/article/details/105735831

function climbStairs(n: number): number {
    const map = new Map()
    function step(nums:number):number{
        if(nums < 1){
            return 0
        }
        if(nums == 1){
            return 1
        }
        if(nums == 2){
            return 2
        }
        if(map.has(nums)){
            return map.get(nums)
        }else{
            let values = step(nums -1) + step(nums - 2)
            map.set(nums,values)
            return values
        }

        
    }

    return step(n)
};

console.log(climbStairs(5))